# 个数可变的位置参数
def fun(*para):
    print(type(para))
    for item in para:
        print(item)


# 调用
fun(10, 20, 30, 40)
print('------------------------')
fun(10)
print('------------------------')
fun(20, 30)
print('------------------------')
fun([11, 22, 33, 44])   # [11, 22, 33, 44]      实际上传递的是一个参数
print('------------------------')

# 在调用时，参数前加一颗星，分将列表进行解包
fun(*[55, 66, 77, 88, 99])
print('------------------------')


# 个数可变的关键字参数
def fun2(**para):
    print(type(para))
    for key, value in para.items():
        print(key, '---------', value)


# 调用
fun2(name='张三', age=20, sex='男')    # 关键字参数
print('------------------------')
# <class 'dict'>
# name --------- 张三
# age --------- 20
# sex --------- 男

d = {'name': '李四', 'age': 18, 'sex': '女'}   # 字典
# fun2(d)     # TypeError: fun2() takes 0 positional arguments but 1 was given
print('------------------------')

fun2(**d)
print('------------------------')
# <class 'dict'>
# name --------- 李四
# age --------- 18
# sex --------- 女

